#!/bin/bash

########################################################################
# Uso: Permite iniciar, parar, reiniciar y ver el estado de un proceso #
########################################################################

PID=""
COMANDO=$1

#Muestro el numero de proceso del comando
function show_pid {
   echo " [PID=$PID] "
}   

#Obtengo el numero de proceso del comando
function get_pid {
   PID=`ps | grep $COMANDO | cut -d " " -f 2`
   #PID=pgrep $COMANDO    
}

#Detengo el comando
function stop {
   get_pid   
   if [ -z $PID ]; then
     echo "El comando [$COMANDO] no esta en ejecucion." 
     exit 1
   else
     echo -n "Deteniendo el comando [$COMANDO] con`show_pid`.... "
     kill -9 $PID 
     sleep 1
     echo "Detenido."
   fi
}

#Inicio el comando
function start {
   get_pid   
   if [ -z $PID ]; then
      #Chequeo si el comando existe / tiene suficientes permisos	
      if [ ! -z `which ./$COMANDO` ]; then	          
	./$COMANDO &
	get_pid
	echo -n "Iniciando el comando [$COMANDO] con`show_pid`.... "
	sleep 1     
        echo "Iniciado."	
      else 
        echo "El comando [$COMANDO] no existe o no tiene suficientes permisos ...."
      fi
   else
     echo "El comando [$COMANDO] con" `show_pid` "ya se esta ejecutando ...."     
   fi
}

#ReInicio el comando
function restart {
   get_pid
   if [ -z $PID ]; then
      start
   else
      stop
      start
   fi
}

#Veo el estado del comando
function status {
   get_pid
   if [ -z  $PID ]; then
      echo "El comando [$COMANDO] no esta en ejecucion."
      exit 1
   else
      echo "El comando [$COMANDO] con" `show_pid` "se esta ejecutando."  
   fi
}


#*******************#
#Comienzo del script#
#*******************#

#Verifico cantidad de argumentos

if [ $# -lt 2 ]; then
	echo "La cantidad de parametros es invalida."
	echo "Uso: $0 {Comando} {start|stop|restart|status}"
	exit 1
fi

#Opciones disponibles

case "$2" in
	start)
      		start 	;;
   	stop)
      		stop   	;;
   	restart)
      		restart ;;
   	status)
      		status 	;;
   	*)
      		echo "Uso: $0 {Comando} {start|stop|restart|status}"
esac

#**************#
#Fin del script#
#**************#

